<?php
/**
 * 基础函数库
 * @copyright Copyright&copy; 2015, 广州六象元一网络科技有限公司
 * @author 王海龙 $
 * @version  $Id: funBase.php, v 1.0, 2015-01-01 王海龙 $
 */

/**
 * 根据参数获取链接
 *
 * @access  private
 * @param    str   $mode    链接模式
 * @param    ar    $data    链接数据
 * @return   url
 */
function getUrl($mode = '', $data = '') {
    if (!empty($mode)) {
        switch ($mode)
        {
            case 'ad':
                if (!empty($data['ad_id'])) {
                    return "ad.php?id={$data['ad_id']}";
                } else {
                    return false;
                }
            case 'ad_img':
                if (!empty($data['img_url'])) {
                    return $data['img_url'];
                } elseif (!empty($data['ad_code'])) {
                    return $data['ad_code'];
                }
                else {
                    return false;
                }
            case 'brand_logo':
                if (!empty($data)) {
                    return __IMG__.'/data/brandlogo/' . $data;
                }
            case 'goods_thumb':
                if (!empty($data)) {
                    return '/' . $data;
                }
            case 'goods_img':
                if (!empty($data)) {
                    return '/' . $data;
                }
            case 'goods':
                if (!empty($data['id']) || !empty($data['goods_id'])) {
                    return 'goods.php?id=' . (!empty($data['id'])?$data['id']:$data['goods_id']);
                }
            case 'tvd':
                if (!empty($data) && intval($data)) {
                    return 'tvd.php?id=' . $data;
                }
            case 'tvd_cat':
                if (!empty($data) && intval($data)) {
                    return 'tvd_list.php?c=' . $data;
                }
            case 'tvd_list_img':
                if (!empty($data)) {
                    return '/' . $data;
                }
            case 'activity_img':
                if (!empty($data)) {
                    return '/' . $data;
                }
            case 'search':
                if (!empty($data)) {
                    foreach ($data as $key => $value) {
                        $str .= "&$key=$value";
                    }
                    return 'search.php?' . $str;
                }
            case 'head_url':
                if (!empty($data)) {
                    return '/' . $data;
                }
        }
        return false;
    } else {
        return false;
    }
}

/*
* 冒泡排序
* $arr 需排序的数组
* $val 排序的数组键
* $type 排序方式 ASC或DESC
*/
function bubbleSort($arr,$val,$type){
    $arr=array_values($arr);
    for($i=0;$i<count($arr)-1;$i++ ){
        for($j=0;$j<count($arr)-1-$i;$j++){
            if($type=='DESC'){
                if(strcasecmp($arr[$j]["$val"],$arr[$j+1]["$val"]) < 0 || $arr[$j]["$val"] < $arr[$j+1]["$val"]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $tmp;
                }
            }else{
                if(strcasecmp($arr[$j]["$val"],$arr[$j+1]["$val"]) > 0 || $arr[$j]["$val"] > $arr[$j+1]["$val"]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $tmp;
                }
            }
        }
    }
    return $arr;
}

/**
 * 返回随机生成的字符串
 * @param  int $num 要生成几位数
 * @return str      返回随机生成的字符串
 */
function randStr($num = 8) {
    $letters = 'abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    return substr(str_shuffle($letters), 0, $num);
}

// 实例化FTP类
function FTP($k = 0) {
    if (!empty($GLOBALS['FTP'][$k])) {
        // 如果已经实例化，则直接返回
        return $GLOBALS['FTP'][$k];
    } elseif (!empty($GLOBALS['_CFG']['FTP'][$k])) {
        // 否则如果存在配置并未实例化，则实例化并返回
        include_once(ROOT_PATH . 'includes/classFtp.php');
        $GLOBALS['FTP'][$k] = new classFtp($GLOBALS['_CFG']['FTP'][$k]);
        if (!empty($GLOBALS['FTP'][$k]->conn_id)) {
            return $GLOBALS['FTP'][$k];
        } else {
            return false;
        }
    } else {
        return false;
    }
}

// 实例化JSON类
function JSON($k = 0) {
    if (!empty($GLOBALS['JSON'])) {
        // 如果已经实例化，则直接返回
        return $GLOBALS['JSON'];
    } else {
        // 否则如果存在配置并未实例化，则实例化并返回
        include_once(ROOT_PATH . 'includes/cls_json.php');
        $GLOBALS['JSON'] = new JSON;
        return $GLOBALS['JSON'];
    }
}

/* 实例化缓存类库 */
function M() {
    if (!empty($GLOBALS['mem'])) {
        // 如果已经实例化，则直接返回
        return $GLOBALS['mem'];
    } else {
        // 实例化mem类
        $GLOBALS['mem'] = new memcached();
        // 以二进制进行传输，当要进行密码验证时，这个一定要为true
        $GLOBALS['mem']->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
        // 添加服务池
        $GLOBALS['mem']->addServer("{$GLOBALS['_CFG']['memcachedServer'][0]['host']}", "{$GLOBALS['_CFG']['memcachedServer'][0]['port']}");
        // 进行密码验证(已免密码)
        $GLOBALS['mem']->setSaslAuthData("{$GLOBALS['_CFG']['memcachedServer'][0]['user']}","{$GLOBALS['_CFG']['memcachedServer'][0]['pass']}");
        // 取消自动压缩，如果要后面追加数据，不可压缩数据
        $GLOBALS['mem']->setOption(Memcached::OPT_COMPRESSION, false);
        return $GLOBALS['mem'];
    }
}

/**
 * 实例化计数器操作类
 */
function C() {
    if (!empty($GLOBALS['COUNTER'])) {
        // 如果已经实例化，则直接返回
        return $GLOBALS['COUNTER'];
    } else {
        // 否则如果存在配置并未实例化，则实例化并返回
        include_once(ROOT_PATH . 'includes/classCounter.php');
        $GLOBALS['COUNTER'] = new classCounter;
        return $GLOBALS['COUNTER'];
    }
}

/**
 * 实例化列队操作类
 */
function Q() {
    if (!empty($GLOBALS['QUEUE'])) {
        // 如果已经实例化，则直接返回
        return $GLOBALS['QUEUE'];
    } else {
        // 否则如果存在配置并未实例化，则实例化并返回
        include_once(ROOT_PATH . 'includes/classQueue.php');
        $GLOBALS['QUEUE'] = new classQueue;
        return $GLOBALS['QUEUE'];
    }
}

/**
 * 实例化数据库操作类
 */
function DB() {
    if (!empty($GLOBALS['DB'])) {
        // 如果已经实例化，则直接返回
        return $GLOBALS['DB'];
    } else {
        // 否则如果存在配置并未实例化，则实例化并返回
        if (!class_exists('classMysqli')) {
            include_once(ROOT_PATH . 'includes/classMysqli.php');
        }
        $GLOBALS['DB'] = new classMysqli($GLOBALS['_CFG']['dbHost'], $GLOBALS['_CFG']['dbUser'], $GLOBALS['_CFG']['dbPass'], $GLOBALS['_CFG']['dbName'],$GLOBALS['_CFG']['charset'],$GLOBALS['_CFG']['prefix'], 0, $GLOBALS['_CFG']['dbRead']);
        return $GLOBALS['DB'];
    }
}
